package com.nexus.all.service;


import com.nexus.all.dto.LoginBodyDTO;
import com.nexus.all.dto.UserUpdateDTO;
import com.nexus.all.dto.excel.UserExcelData;
import com.nexus.all.listener.excel.UserCheckListener;
import com.nexus.all.model.User;
import com.nexus.all.vo.UserVO;
import com.nexus.bean.model.UserInfoVO;

import java.util.List;

/**
 * @author zxt
 */
public interface UserService {

    /**
     * 登录验证
     *
     * @param dto
     * @return
     */
    UserInfoVO login(LoginBodyDTO dto);

    /**
     * 根据id更新
     *
     * @param user
     */
    void updateById(User user);

    /**
     * 获取用户信息
     *
     * @param id
     * @return
     */
    UserVO getById(Long id);


    /**
     * 获取所有用户信息
     * 排除当前用户
     *
     * @return
     */
    List<UserVO> getAllUser();

    /**
     * 手机登录
     *
     * @param dto
     * @return
     */
    UserInfoVO mobileLogin(LoginBodyDTO dto);

    /**
     * 修改用户密码
     *
     * @param dto
     */
    void updatePassword(UserUpdateDTO dto);

    /**
     * 修改头像
     *
     * @param dto
     */
    void updateAvatar(UserUpdateDTO dto);

    void updateNameEmail(UserUpdateDTO dto);

    /**
     * 校验导入数据
     *
     * @param excelDataList
     * @param userCheckListener
     * @param userId
     */
    void checkImportData(List<UserExcelData> excelDataList, UserCheckListener userCheckListener, Long userId);

    /**
     * 导入数据
     *
     * @param excelDataList
     * @param userId
     */
    void importData(List<UserExcelData> excelDataList, Long userId);
}
